/**
 * @module music
 * @author luox
 * @description 存放当前播放的音乐的信息 以及播放列表 全部采用promise 为了知道何是能拿到链接
 * @updateTime 2023.01.05
*/
import {getMusicCover,getMusicUrl} from '@/request/Api.js'
export default {
  namespaced:true,
  state:{
    music:{
      songs_al:{
        picUrl:'',
        name:'',
      },
      songs_alia:[],
      playUrl:'',
      songName:'',
      song_id:'',
      songs_ar:[{
        name:''
      }]
    },
    musicList:[]
  },
  mutations:{
    // 设置播放歌曲信息
    SETMUSIC(state,params){
      state.music[params.key] = params.value
    },
    // 添加单曲进入播放列表
    ADDMUSICLIST(state,musicObj){
      var idx 
      let result = state.musicList.find((item,index)=>{
        idx = index
        return item.id == musicObj.id
      })
      // 证明新曲子
      if(result==undefined){
        state.musicList.unshift(musicObj)
      }else{
        state.musicList.splice(idx,1)
        state.musicList.unshift(musicObj)
      }
    },
    // 清空播放列表
    CLEARMUSICLIST(state){
      state.musicList = []
    }
  },
  actions:{
    // 异步发送请求进行请求到 歌曲数据
    getMusicCover(ctx,ids,isArray=true){
      return new Promise(async (resolve,reject)=>{
        const {data:res} = await getMusicCover(ids)
        if(res.code!==200){
          return reject('fail')
        }
        if(isArray){
          ctx.commit('SETMUSIC',{key:'songs_al',value:res.songs[0].al})
          ctx.commit('SETMUSIC',{key:'songs_alia',value:res.songs[0].alia})
          ctx.commit('SETMUSIC',{key:'song_id',value:res.songs[0].id})
          ctx.commit('SETMUSIC',{key:'songs_ar',value:res.songs[0].ar})
          ctx.commit('SETMUSIC',{key:'songName',value:res.songs[0].name})
        }
        resolve(res)
      })
    },
    // 必选参数 : id : 音乐 id level: 播放音质等级, 分为 standard => 标准, exhigh=>极高, lossless=>无损, hires=>Hi-Res
    getMusicUrl(ctx,id,isArray=true){
      return  new Promise(async (resolve,reject)=>{
        const {data:res} = await getMusicUrl(id)
        if(res.code!==200){
          return reject(res) 
        }
        if(isArray){
          ctx.commit('SETMUSIC',{key:'playUrl',value:res.data[0].url})
        }
        resolve(res)
      })
    }
  },
}